// pages/login/login_new/index.ts
import { userLogin, getOpenId, getPhoneNumber as getPhoneNumberApi } from '../../../utils/api/login'
import Notify from 'pages/service-old/bind-doctor/node_modules/@vant/weapp/notify/notify';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    phoneNumber: '',
    password: '',
    isLoggingIn: false
  },

  // 输入手机号
  onPhoneInput(event: any) {
    this.setData({
      phoneNumber: event.detail
    });
  },

  // 输入密码
  onPasswordInput(event: any) {
    this.setData({
      password: event.detail
    });
  },

  // 微信授权获取手机号
  getPhoneNumber(e: any) {
    if (e.detail.code) {
      getPhoneNumberApi({ phoneCode: e.detail.code }).then(async (res: any) => {
        console.log("获取手机号成功", res)
        if (res.code == 1) {
          console.log("接口出现问题不应返回code==1");
          Notify({ type: 'warning', message: '微信授权失败，请手动输入手机号' });
          return;
        }
        const phoneNumber = <string>res.data;
        this.setData({
          phoneNumber: phoneNumber,
          password: phoneNumber  // 默认密码为手机号
        });
        Notify({ type: 'success', message: '微信授权成功，密码已自动填充' });
      }).catch((err: any) => {
        console.log("获取手机号失败", err);
        Notify({ type: 'warning', message: '微信授权失败，请手动输入手机号' });
      })
    } else {
      console.log("手机号码组件调用失败");
      Notify({ type: 'warning', message: '授权取消，请手动输入手机号' });
    }
  },

  // 跳转注册页面
  goSignup() {
    wx.navigateTo({
      url: '../signup/index'
    })
  },

  // 登录
  async onLogin() {
    // 验证手机号
    if (!this.data.phoneNumber || this.data.phoneNumber.trim() === '') {
      Notify({ type: 'danger', message: '请输入手机号码' });
      return;
    }
    
    const phoneReg = /^1[3-9]\d{9}$/;
    if (!phoneReg.test(this.data.phoneNumber)) {
      Notify({ type: 'danger', message: '请输入正确的11位手机号码' });
      return;
    }

    if (!this.data.password || this.data.password.trim() === '') {
      Notify({ type: 'danger', message: '请输入密码' });
      return;
    }

    this.setData({
      isLoggingIn: true
    });

    try {
      console.log('准备登录，手机号:', this.data.phoneNumber);
      const res = await userLogin({
        phoneNumber: this.data.phoneNumber,
        password: this.data.password
      });

      console.log('登录API返回:', res);
      console.log('返回数据类型:', typeof res);
      console.log('返回数据内容:', JSON.stringify(res));
      
      if (res.code === 1) {
        Notify({ type: 'danger', message: res.msg || '登录失败' });
        this.setData({
          isLoggingIn: false
        });
        return;
      }

      // 存储token和用户信息
      wx.setStorageSync("access_token", res.data.access_token);
      wx.setStorageSync("refresh_token", res.data.refresh_token);
      
      // 如果后端返回了用户信息，保存patientUid
      if (res.data.user_info) {
        wx.setStorageSync("patientUid", res.data.user_info.patientUid);
        wx.setStorageSync("phoneNumber", res.data.user_info.phoneNumber);
        console.log('用户信息已保存:', res.data.user_info);
      }
      
      try {
        await getOpenId();
        console.log('OpenID已获取并保存');
      } catch (err) {
        console.warn('获取OpenID失败，但不影响登录', err);
      }
      
      Notify({ type: 'success', message: '登录成功' });
      
      // 延迟跳转到首页
      setTimeout(() => {
        wx.switchTab({
          url: '/pages/home/index'
        });
      }, 500);

    } catch (err: any) {
      console.log("登录失败", err);
      Notify({ type: 'danger', message: '登录失败，请检查网络或稍后重试' });
      this.setData({
        isLoggingIn: false
      });
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})
